// type的作用：定义对象的类型
// ？号的作用：表示该属性是可选的
// |号的作用：表示该属性可以有多种类型
type Person = { name: string, age?: number, sex?: string | number };

type NUM = number

type Add = (a: number, b: number) => number

let obj: Person = { name: "小花" };
console.log(obj.name);
console.log(obj.age);
console.log(obj.sex); // 类型“{ name: string; age: number; }”上不存在属性“sex”

let obj2: Person = { name: "黎明", age: 23 };
let obj3: Person = { name: "张三", age: 43 };


let my_num: number = 1
let my_num2: NUM = 1

let addFun: Add = function (c, d) {
    return c + d
}
addFun(1, 2)
addFun('a', 3) // 类型“string”的参数不能赋给类型“number”的参数
addFun(4) //应有 2 个参数，但获得 1 个
addFun(5, 6, 7) // 应有 2 个参数，但获得 3 个